#include "stdio.h"
#include "stdlib.h"


#define MAXLEN 255
typedef struct{
	char chars[MAXLEN];
	int length;
}String;

//typedef struct{
//	char *chars;
//	int length;
//}String;
//
//typedef struct Node{
//	char ch;
//	Node * next;
//}*String,Node;



void init(String &S);
void strAssign(String &T,String chars);
void strCopy(String &T,String chars);
bool strEmpty(String S);
int strLength(String S);
void clearString(String &S);
void destroyStr(String &S);
void concat(String &T,String S1,String S2);
void subString(String &Sub,String S,int pos,int len);
int index(String S,String T);
int strCompare(String S,String T);

int main(){
	
	
	
	return 0;
}
void init(String &S){
//	S.chars = (char *)malloc(MAXLEN*sizeof(char));
	S.length = 0;
}
void strAssign(String &T,char* chars){
	int i=0;
	while(chars[i]!='\0'){
		T.chars[i]=chars[i];
		i++;
	}
	T.chars[i]=chars[i];
}
void strCopy(String &T,String chars){
	int i=0;
	while(chars.chars[i]!='\0'){
		T.chars[i]=chars.chars[i];
		i++;
	}
	T.chars[i]=chars.chars[i];
}
bool strEmpty(String S){
	if(S.length==0)
		return true;
	return false;
}
int strLength(String S){
	return S.length;
}
void clearString(String &S){
	S.length=0;
}
void destroyStr(String &S){
	S.length=0;
}
void concat(String &T,String S1,String S2){
	int i=0,j=0;
	while(S1.chars[i]!='\0')
		T.chars[j++]=S1.chars[i++];
	i=0;
	while(S2.chars[i]!='\0')
		T.chars[j++]=S1.chars[i++];
	T.chars[j]='\0';
	T.length = j;
}
void subString(String &Sub,String S,int pos,int len){
	int j=0;
	pos--;
	while(j<len && S.chars[pos]!='\0'){
		Sub.chars[j]=S.chars[pos];
		j++;
		pos++;
	}
	Sub.chars[j]='\0';
	Sub.length = j;
}
int index(String S,String T){
	int i=0,n=strLength(S),m=strLength(T);
	String tempStr;
	while(i<= n-m+1){
		subString(tempStr,S,i,m);
		if(strCompare(tempStr,T)==0)
			return i;
		else 
			i++;
	}
}

int strCompare(String S,String T){
	int i=0;
	while(S.chars[i]!='\0'&&T.chars[i]!='\0')
		if(S.chars[i]!=T.chars[i])
			return S.chars[i]-T.chars[i];
		else
			i++;
			
	return S.length-T.length;
}